package com.asset.dispoal.business.mediation.domain.db.mapper;

import com.asset.dispoal.business.bsCase.domain.db.entity.BsCase;
import com.asset.dispoal.business.mediation.domain.db.FormulaData;
import com.asset.dispoal.business.mediation.domain.db.entity.AgreementCaseInfo;
import com.asset.dispoal.business.mediation.domain.db.entity.ReduceOperate;
import com.asset.dispoal.business.mediation.dto.MediationRequest;
import com.asset.dispoal.business.mediation.dto.MediationResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import tech.mhuang.pacebox.springboot.protocol.data.Page;

import java.util.List;
import java.util.Map;

/**
 * 案件减免预设操作表(BsCaseReduceOperate)表数据库访问层
 *
 * @author yf
 * @since 2022-08-26 09:34:19
 */
@Mapper
public interface ReduceOperateMapper {

    /**
     * 根据id案件id查询结果
     *
     * @param caseId
     * @return
     */
    BsCase queryBsCaseById(String caseId);

    /**
     * 保存信息
     *
     * @param operate
     * @return
     */
    int insert(ReduceOperate operate);

    /**
     * 根据案件id获取列表集合
     *
     * @param caseId
     * @return
     */
    List<ReduceOperate> getLogsByCaseId(String caseId);

    /**
     * 根据id获取操作记录
     *
     * @param id
     * @return
     */
    ReduceOperate getLogById(String id);

    /**
     * 根据条件查询调解列表条数
     *
     * @param request
     * @return
     */
    int queryCount(MediationRequest request);

    /**
     * 条件查询列表
     *
     * @param page
     * @return
     */
    List<MediationResponse> queryPage(Page<MediationRequest> page);

    /**
     * 根据案件id查询合同相关信息
     *
     * @param caseId
     * @return
     */
    List<AgreementCaseInfo> queryAgreementRateByCaseId(String caseId);

    /**
     * 根据案件id获取参数信息
     *
     * @param caseId
     * @return
     */
    List<Map<String, String>> getFormulaInfoBycaseId(String caseId);

    /**
     * 查询公式及借款详情
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> queryFormularAndBorrower(@Param("ListMap") List<Map<String, String>> map,
                                                       @Param("caseId") String caseId);

    /**
     * 查询参数值映射
     *
     * @param lists
     * @return
     */
    List<Map<String, String>> queryParameterMapping(List<String> lists);

    /**
     * 根据公式id查询公式详情
     *
     * @param formulaId
     * @return
     */
    List<FormulaData> queryFormulaDataById(String formulaId);

    /**
     * 根据案件id查询出最新一条减免记录
     *
     * @param caseId
     * @return
     */
    ReduceOperate getLogByCaseId(String caseId);
}

